package net;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;

/**
 * 客户端
 * 1.实例化一个Socket对象向服务器发出连接请求
 * 注意：1.要连接其他电脑，需先关闭电脑防火墙；2.重启电脑，要重新查看IP地址，因为IP地址可能会改变。
 */
public class Client {
    public static void main(String[] args){
        /*try {
            Socket socket=new Socket("192.168.1.119",9988);
            System.out.println("客服端连接成功！");
        } catch (Exception e) {
           e.printStackTrace();
        }*/
/**
 * 一、客户端传输文件到服务端
 */
        /*try {
            Socket socket=new Socket("192.168.1.103",9988);
            System.out.println("客服端连接成功！");
            OutputStreamWriter osw=new OutputStreamWriter(socket.getOutputStream());//写入文件
            BufferedWriter bw=new BufferedWriter(osw);
            Scanner kb=new Scanner(System.in);//键盘输入字符串
            String mess=kb.nextLine();//保存键盘输入的字符串
            while (!mess.equals("bye")){
                osw.write(mess+"\n");
                osw.flush();//刷新，不然数据还在缓存里
                mess=kb.nextLine();
            }
            kb.close();bw.close();
        } catch (Exception e) {
           e.printStackTrace();
        }*/

/**
 *二、建立服务器与客户端的收发：客户端先发后收
 */
        /*try {
            Socket socket=new Socket("192.168.1.103",9988);
            System.out.println("客服端连接成功！");
            OutputStreamWriter osw=new OutputStreamWriter(socket.getOutputStream());//写入文件
            BufferedWriter bw=new BufferedWriter(osw);
            Scanner kb=new Scanner(System.in);//键盘输入字符串
            String mess=kb.nextLine();//保存键盘输入的字符串
            InputStreamReader isr=new InputStreamReader(socket.getInputStream());//字符流输入操作
            BufferedReader br=new BufferedReader(isr);
            while (!mess.equals("bye")){
                osw.write(mess+"\n");
                osw.flush();//刷新，不然数据还在缓存里
                String message=br.readLine();
                System.out.println("cip说:"+message);
                mess=kb.nextLine();
            }
            kb.close();bw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }*/


/**
 * 三、把收信息功能写到线程Recriver中，建立服务器与客户端的连续收发
 */
        try {
            Socket socket=new Socket("192.168.1.103",9899);
            System.out.println("客服端连接成功！");
            new Receiver(socket,"服务器").start();//启动接收线程
            OutputStreamWriter osw=new OutputStreamWriter(socket.getOutputStream());//写入文件
            BufferedWriter bw=new BufferedWriter(osw);
            Scanner kb=new Scanner(System.in);//键盘输入字符串
            String mess=kb.nextLine();//保存键盘输入的字符串
            while (!mess.equals("bye")){
                osw.write(mess+"\n");
                osw.flush();//刷新，不然数据还在缓存里
                mess=kb.nextLine();
            }
            kb.close();bw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
